﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SmallFunctionTest
{
    public sealed class MimeTypeTable
    {
        internal static Lazy<SortedDictionary<string, string>> MimeTypes
        {
            get
            {
                return new Lazy<SortedDictionary<string, string>>(() => LoadTable(), true);
            }
        }
        private static SortedDictionary<string, string> LoadTable()
        {
            SortedDictionary<string, string> types = new SortedDictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);

            types.Add(".3dm", "x-world/x-3dmf");
            types.Add(".3dmf", "x-world/x-3dmf");
            types.Add(".aab", "application/x-authorware-bin");
            types.Add(".aam", "application/x-authorware-map");
            types.Add(".aas", "application/x-authorware-seg");
            types.Add(".abc", "text/vnd.abc");
            types.Add(".acgi", "text/html");
            types.Add(".afl", "video/animaflex");
            types.Add(".ai", "application/postscript");
            types.Add(".aif", "audio/aiff");
            types.Add(".aifc", "audio/aiff");
            types.Add(".aiff", "audio/aiff");
            types.Add(".aim", "application/x-aim");
            types.Add(".aip", "text/x-audiosoft-intra");
            types.Add(".ani", "application/x-navi-animation");
            types.Add(".aos", "application/x-nokia-9000-communicator-add-on-software");
            types.Add(".aps", "application/mime");
            types.Add(".art", "image/x-jg");
            types.Add(".asf", "video/x-ms-asf");
            types.Add(".asm", "text/x-asm");
            types.Add(".asp", "text/asp");
            types.Add(".asx", "application/x-mplayer2");
            types.Add(".au", "audio/x-au");
            types.Add(".avi", "video/avi");
            types.Add(".avs", "video/avs-video");
            types.Add(".bcpio", "application/x-bcpio");
            types.Add(".bm", "image/bmp");
            types.Add(".bmp", "image/bmp");
            types.Add(".boo", "application/book");
            types.Add(".book", "application/book");
            types.Add(".boz", "application/x-bzip2");
            types.Add(".bsh", "application/x-bsh");
            types.Add(".bz", "application/x-bzip");
            types.Add(".bz2", "application/x-bzip2");
            types.Add(".c", "text/plain");
            types.Add(".c++", "text/plain");
            types.Add(".cat", "application/vnd.ms-pki.seccat");
            types.Add(".cc", "text/plain");
            types.Add(".ccad", "application/clariscad");
            types.Add(".cco", "application/x-cocoa");
            types.Add(".cdf", "application/cdf");
            types.Add(".cer", "application/pkix-cert");
            types.Add(".cha", "application/x-chat");
            types.Add(".chat", "application/x-chat");
            types.Add(".class", "application/java");
            types.Add(".conf", "text/plain");
            types.Add(".cpio", "application/x-cpio");
            types.Add(".cpp", "text/plain");
            types.Add(".cpt", "application/x-cpt");
            types.Add(".crl", "application/pkix-crl");
            types.Add(".crt", "application/pkix-cert");
            types.Add(".csh", "application/x-csh");
            types.Add(".css", "text/css");
            types.Add(".cxx", "text/plain");
            types.Add(".dcr", "application/x-director");
            types.Add(".deepv", "application/x-deepv");
            types.Add(".def", "text/plain");
            types.Add(".der", "application/x-x509-ca-cert");
            types.Add(".dif", "video/x-dv");
            types.Add(".dir", "application/x-director");
            types.Add(".dl", "video/dl");
            types.Add(".doc", "application/msword");
            types.Add(".dot", "application/msword");
            types.Add(".dp", "application/commonground");
            types.Add(".drw", "application/drafting");
            types.Add(".dv", "video/x-dv");
            types.Add(".dvi", "application/x-dvi");
            types.Add(".dwf", "drawing/x-dwf (old)");
            types.Add(".dwg", "application/acad");
            types.Add(".dxf", "application/dxf");
            types.Add(".dxr", "application/x-director");
            types.Add(".el", "text/x-script.elisp");
            types.Add(".elc", "application/x-elc");
            types.Add(".eps", "application/postscript");
            types.Add(".es", "application/x-esrehber");
            types.Add(".etx", "text/x-setext");
            types.Add(".evy", "application/envoy");
            types.Add(".f", "text/plain");
            types.Add(".f77", "text/plain");
            types.Add(".f90", "text/plain");
            types.Add(".fdf", "application/vnd.fdf");
            types.Add(".fif", "image/fif");
            types.Add(".fli", "video/fli");
            types.Add(".flo", "image/florian");
            types.Add(".flx", "text/vnd.fmi.flexstor");
            types.Add(".fmf", "video/x-atomic3d-feature");
            types.Add(".for", "text/plain");
            types.Add(".fpx", "image/vnd.fpx");
            types.Add(".frl", "application/freeloader");
            types.Add(".funk", "audio/make");
            types.Add(".g", "text/plain");
            types.Add(".g3", "image/g3fax");
            types.Add(".gif", "image/gif");
            types.Add(".gl", "video/gl");
            types.Add(".gsd", "audio/x-gsm");
            types.Add(".gsm", "audio/x-gsm");
            types.Add(".gsp", "application/x-gsp");
            types.Add(".gss", "application/x-gss");
            types.Add(".gtar", "application/x-gtar");
            types.Add(".gz", "application/x-gzip");
            types.Add(".gzip", "application/x-gzip");
            types.Add(".h", "text/plain");
            types.Add(".hdf", "application/x-hdf");
            types.Add(".help", "application/x-helpfile");
            types.Add(".hgl", "application/vnd.hp-HPGL");
            types.Add(".hh", "text/plain");
            types.Add(".hlb", "text/x-script");
            types.Add(".hlp", "application/x-helpfile");
            types.Add(".hpg", "application/vnd.hp-HPGL");
            types.Add(".hpgl", "application/vnd.hp-HPGL");
            types.Add(".hqx", "application/binhex");
            types.Add(".hta", "application/hta");
            types.Add(".htc", "text/x-component");
            types.Add(".htm", "text/html");
            types.Add(".html", "text/html");
            types.Add(".htmls", "text/html");
            types.Add(".htt", "text/webviewhtml");
            types.Add(".htx", "text/html");
            types.Add(".ice", "x-conference/x-cooltalk");
            types.Add(".ico", "image/x-icon");
            types.Add(".idc", "text/plain");
            types.Add(".ief", "image/ief");
            types.Add(".iefs", "image/ief");
            types.Add(".iges", "application/iges");
            types.Add(".igs", "application/iges");
            types.Add(".ima", "application/x-ima");
            types.Add(".imap", "application/x-httpd-imap");
            types.Add(".inf", "application/inf");
            types.Add(".ins", "application/x-internett-signup");
            types.Add(".ip", "application/x-ip2");
            types.Add(".isu", "video/x-isvideo");
            types.Add(".it", "audio/it");
            types.Add(".iv", "application/x-inventor");
            types.Add(".ivr", "i-world/i-vrml");
            types.Add(".ivy", "application/x-livescreen");
            types.Add(".jam", "audio/x-jam");
            types.Add(".jav", "text/plain");
            types.Add(".java", "text/plain");
            types.Add(".jcm", "application/x-java-commerce");
            types.Add(".jfif", "image/jpeg");
            types.Add(".jfif-tbnl", "image/jpeg");
            types.Add(".jpe", "image/jpeg");
            types.Add(".jpeg", "image/jpeg");
            types.Add(".jpg", "image/jpeg");
            types.Add(".jps", "image/x-jps");
            types.Add(".js", "application/x-javascript");
            types.Add(".jut", "image/jutvision");
            types.Add(".kar", "audio/midi");
            types.Add(".ksh", "text/x-script.ksh");
            types.Add(".la", "audio/nspaudio");
            types.Add(".lam", "audio/x-liveaudio");
            types.Add(".latex", "application/x-latex");
            types.Add(".list", "text/plain");
            types.Add(".lma", "audio/nspaudio");
            types.Add(".log", "text/plain");
            types.Add(".lsp", "application/x-lisp");
            types.Add(".lst", "text/plain");
            types.Add(".lsx", "text/x-la-asf");
            types.Add(".ltx", "application/x-latex");
            types.Add(".m", "text/plain");
            types.Add(".m1v", "video/mpeg");
            types.Add(".m2a", "audio/mpeg");
            types.Add(".m2v", "video/mpeg");
            types.Add(".m3u", "audio/x-mpequrl");
            types.Add(".man", "application/x-troff-man");
            types.Add(".map", "application/x-navimap");
            types.Add(".mar", "text/plain");
            types.Add(".mbd", "application/mbedlet");
            types.Add(".mc$", "application/x-magic-cap-package-1.0");
            types.Add(".mcd", "application/mcad");
            types.Add(".mcf", "image/vasa");
            types.Add(".mcp", "application/netmc");
            types.Add(".me", "application/x-troff-me");
            types.Add(".mht", "message/rfc822");
            types.Add(".mhtml", "message/rfc822");
            types.Add(".mid", "audio/midi");
            types.Add(".midi", "audio/midi");
            types.Add(".mif", "application/x-mif");
            types.Add(".mime", "message/rfc822");
            types.Add(".mjf", "audio/x-vnd.AudioExplosion.MjuiceMediaFile");
            types.Add(".mjpg", "video/x-motion-jpeg");
            types.Add(".mm", "application/base64");
            types.Add(".mme", "application/base64");
            types.Add(".mod", "audio/mod");
            types.Add(".moov", "video/quicktime");
            types.Add(".mov", "video/quicktime");
            types.Add(".movie", "video/x-sgi-movie");
            types.Add(".mp2", "video/mpeg");
            types.Add(".mp3", "audio/mpeg3");
            types.Add(".mpa", "audio/mpeg");
            types.Add(".mpc", "application/x-project");
            types.Add(".mpe", "video/mpeg");
            types.Add(".mpeg", "video/mpeg");
            types.Add(".mpg", "video/mpeg");
            types.Add(".mpga", "audio/mpeg");
            types.Add(".mpp", "application/vnd.ms-project");
            types.Add(".mpt", "application/x-project");
            types.Add(".mpv", "application/x-project");
            types.Add(".mpx", "application/x-project");
            types.Add(".mrc", "application/marc");
            types.Add(".ms", "application/x-troff-ms");
            types.Add(".mv", "video/x-sgi-movie");
            types.Add(".my", "audio/make");
            types.Add(".mzz", "application/x-vnd.AudioExplosion.mzz");
            types.Add(".nap", "image/naplps");
            types.Add(".naplps", "image/naplps");
            types.Add(".nc", "application/x-netcdf");
            types.Add(".ncm", "application/vnd.nokia.configuration-message");
            types.Add(".nif", "image/x-niff");
            types.Add(".niff", "image/x-niff");
            types.Add(".nix", "application/x-mix-transfer");
            types.Add(".nsc", "application/x-conference");
            types.Add(".nvd", "application/x-navidoc");
            types.Add(".oda", "application/oda");
            types.Add(".omc", "application/x-omc");
            types.Add(".omcd", "application/x-omcdatamaker");
            types.Add(".omcr", "application/x-omcregerator");
            types.Add(".p", "text/x-pascal");
            types.Add(".p10", "application/pkcs10");
            types.Add(".p12", "application/pkcs-12");
            types.Add(".p7a", "application/x-pkcs7-signature");
            types.Add(".p7c", "application/pkcs7-mime");
            types.Add(".p7m", "application/pkcs7-mime");
            types.Add(".p7r", "application/x-pkcs7-certreqresp");
            types.Add(".p7s", "application/pkcs7-signature");
            types.Add(".part", "application/pro_eng");
            types.Add(".pas", "text/pascal");
            types.Add(".pbm", "image/x-portable-bitmap");
            types.Add(".pcl", "application/x-pcl");
            types.Add(".pct", "image/x-pict");
            types.Add(".pcx", "image/x-pcx");
            types.Add(".pdb", "chemical/x-pdb");
            types.Add(".pdf", "application/pdf");
            types.Add(".pfunk", "audio/make");
            types.Add(".pgm", "image/x-portable-graymap");
            types.Add(".pic", "image/pict");
            types.Add(".pict", "image/pict");
            types.Add(".pkg", "application/x-newton-compatible-pkg");
            types.Add(".pko", "application/vnd.ms-pki.pko");
            types.Add(".pl", "text/plain");
            types.Add(".plx", "application/x-PiXCLscript");
            types.Add(".pm", "image/x-xpixmap");
            types.Add(".pm4", "application/x-pagemaker");
            types.Add(".pm5", "application/x-pagemaker");
            types.Add(".png", "image/png");
            types.Add(".pnm", "application/x-portable-anymap");
            types.Add(".pot", "application/mspowerpoint");
            types.Add(".pov", "model/x-pov");
            types.Add(".ppa", "application/vnd.ms-powerpoint");
            types.Add(".ppm", "image/x-portable-pixmap");
            types.Add(".pps", "application/mspowerpoint");
            types.Add(".ppt", "application/mspowerpoint");
            types.Add(".ppz", "application/mspowerpoint");
            types.Add(".pre", "application/x-freelance");
            types.Add(".prt", "application/pro_eng");
            types.Add(".ps", "application/postscript");
            types.Add(".pvu", "paleovu/x-pv");
            types.Add(".pwz", "application/vnd.ms-powerpoint");
            types.Add(".py", "text/x-script.phyton");
            types.Add(".pyc", "applicaiton/x-bytecode.python");
            types.Add(".qcp", "audio/vnd.qcelp");
            types.Add(".qd3", "x-world/x-3dmf");
            types.Add(".qd3d", "x-world/x-3dmf");
            types.Add(".qif", "image/x-quicktime");
            types.Add(".qt", "video/quicktime");
            types.Add(".qtc", "video/x-qtc");
            types.Add(".qti", "image/x-quicktime");
            types.Add(".qtif", "image/x-quicktime");
            types.Add(".ra", "audio/x-pn-realaudio");
            types.Add(".ram", "audio/x-pn-realaudio");
            types.Add(".ras", "application/x-cmu-raster");
            types.Add(".rast", "image/cmu-raster");
            types.Add(".rexx", "text/x-script.rexx");
            types.Add(".rf", "image/vnd.rn-realflash");
            types.Add(".rgb", "image/x-rgb");
            types.Add(".rm", "application/vnd.rn-realmedia");
            types.Add(".rmi", "audio/mid");
            types.Add(".rmm", "audio/x-pn-realaudio");
            types.Add(".rmp", "audio/x-pn-realaudio");
            types.Add(".rng", "application/ringing-tones");
            types.Add(".rnx", "application/vnd.rn-realplayer");
            types.Add(".roff", "application/x-troff");
            types.Add(".rp", "image/vnd.rn-realpix");
            types.Add(".rpm", "audio/x-pn-realaudio-plugin");
            types.Add(".rss", "text/xml");
            types.Add(".rt", "text/richtext");
            types.Add(".rtf", "text/richtext");
            types.Add(".rtx", "text/richtext");
            types.Add(".rv", "video/vnd.rn-realvideo");
            types.Add(".s", "text/x-asm");
            types.Add(".s3m", "audio/s3m");
            types.Add(".sbk", "application/x-tbook");
            types.Add(".scm", "application/x-lotusscreencam");
            types.Add(".sdml", "text/plain");
            types.Add(".sdp", "application/sdp");
            types.Add(".sdr", "application/sounder");
            types.Add(".sea", "application/sea");
            types.Add(".set", "application/set");
            types.Add(".sgm", "text/sgml");
            types.Add(".sgml", "text/sgml");
            types.Add(".sh", "text/x-script.sh");
            types.Add(".shar", "application/x-bsh");
            types.Add(".shtml", "text/html");
            types.Add(".sid", "audio/x-psid");
            types.Add(".sit", "application/x-sit");
            types.Add(".skd", "application/x-koan");
            types.Add(".skm", "application/x-koan");
            types.Add(".skp", "application/x-koan");
            types.Add(".skt", "application/x-koan");
            types.Add(".sl", "application/x-seelogo");
            types.Add(".smi", "application/smil");
            types.Add(".smil", "application/smil");
            types.Add(".snd", "audio/basic");
            types.Add(".sol", "application/solids");
            types.Add(".spc", "application/x-pkcs7-certificates");
            types.Add(".spl", "application/futuresplash");
            types.Add(".spr", "application/x-sprite");
            types.Add(".sprite", "application/x-sprite");
            types.Add(".src", "application/x-wais-source");
            types.Add(".ssi", "text/x-server-parsed-html");
            types.Add(".ssm", "application/streamingmedia");
            types.Add(".sst", "application/vnd.ms-pki.certstore");
            types.Add(".step", "application/step");
            types.Add(".stl", "application/sla");
            types.Add(".stp", "application/step");
            types.Add(".sv4cpio", "application/x-sv4cpio");
            types.Add(".sv4crc", "application/x-sv4crc");
            types.Add(".svf", "image/x-dwg");
            types.Add(".svr", "application/x-world");
            types.Add(".swf", "application/x-shockwave-flash");
            types.Add(".t", "application/x-troff");
            types.Add(".talk", "text/x-speech");
            types.Add(".tar", "application/x-tar");
            types.Add(".tbk", "application/toolbook");
            types.Add(".tcl", "text/x-script.tcl");
            types.Add(".tcsh", "text/x-script.tcsh");
            types.Add(".tex", "application/x-tex");
            types.Add(".texi", "application/x-texinfo");
            types.Add(".texinfo", "application/x-texinfo");
            types.Add(".text", "text/plain");
            types.Add(".tgz", "application/x-compressed");
            types.Add(".tif", "image/tiff");
            types.Add(".tiff", "image/tiff");
            types.Add(".tr", "application/x-troff");
            types.Add(".tsi", "audio/tsp-audio");
            types.Add(".tsp", "audio/tsplayer");
            types.Add(".tsv", "text/tab-separated-values");
            types.Add(".turbot", "image/florian");
            types.Add(".txt", "text/plain");
            types.Add(".uil", "text/x-uil");
            types.Add(".uni", "text/uri-list");
            types.Add(".unis", "text/uri-list");
            types.Add(".unv", "application/i-deas");
            types.Add(".uri", "text/uri-list");
            types.Add(".uris", "text/uri-list");
            types.Add(".ustar", "multipart/x-ustar");
            types.Add(".uu", "text/x-uuencode");
            types.Add(".uue", "text/x-uuencode");
            types.Add(".vcd", "application/x-cdlink");
            types.Add(".vcs", "text/x-vCalendar");
            types.Add(".vda", "application/vda");
            types.Add(".vdo", "video/vdo");
            types.Add(".vew", "application/groupwise");
            types.Add(".viv", "video/vivo");
            types.Add(".vivo", "video/vivo");
            types.Add(".vmd", "application/vocaltec-media-desc");
            types.Add(".vmf", "application/vocaltec-media-file");
            types.Add(".voc", "audio/voc");
            types.Add(".vos", "video/vosaic");
            types.Add(".vox", "audio/voxware");
            types.Add(".vqe", "audio/x-twinvq-plugin");
            types.Add(".vqf", "audio/x-twinvq");
            types.Add(".vql", "audio/x-twinvq-plugin");
            types.Add(".vrml", "application/x-vrml");
            types.Add(".vrt", "x-world/x-vrt");
            types.Add(".vsd", "application/x-visio");
            types.Add(".vst", "application/x-visio");
            types.Add(".vsw", "application/x-visio");
            types.Add(".w60", "application/wordperfect6.0");
            types.Add(".w61", "application/wordperfect6.1");
            types.Add(".w6w", "application/msword");
            types.Add(".wav", "audio/wav");
            types.Add(".wb1", "application/x-qpro");
            types.Add(".wbmp", "image/vnd.wap.wbmp");
            types.Add(".web", "application/vnd.xara");
            types.Add(".wiz", "application/msword");
            types.Add(".wk1", "application/x-123");
            types.Add(".wmf", "windows/metafile");
            types.Add(".wml", "text/vnd.wap.wml");
            types.Add(".wmlc", "application/vnd.wap.wmlc");
            types.Add(".wmls", "text/vnd.wap.wmlscript");
            types.Add(".wmlsc", "application/vnd.wap.wmlscriptc");
            types.Add(".word", "application/msword");
            types.Add(".wp", "application/wordperfect");
            types.Add(".wp5", "application/wordperfect");
            types.Add(".wp6", "application/wordperfect");
            types.Add(".wpd", "application/wordperfect");
            types.Add(".wq1", "application/x-lotus");
            types.Add(".wri", "application/mswrite");
            types.Add(".wrl", "application/x-world");
            types.Add(".wrz", "model/vrml");
            types.Add(".wsc", "text/scriplet");
            types.Add(".wsrc", "application/x-wais-source");
            types.Add(".wtk", "application/x-wintalk");
            types.Add(".xbm", "image/x-xbitmap");
            types.Add(".xdr", "video/x-amt-demorun");
            types.Add(".xgz", "xgl/drawing");
            types.Add(".xif", "image/vnd.xiff");
            types.Add(".xl", "application/excel");
            types.Add(".xla", "application/excel");
            types.Add(".xlb", "application/excel");
            types.Add(".xlc", "application/excel");
            types.Add(".xld", "application/excel");
            types.Add(".xlk", "application/excel");
            types.Add(".xll", "application/excel");
            types.Add(".xlm", "application/excel");
            types.Add(".xls", "application/excel");
            types.Add(".xlt", "application/excel");
            types.Add(".xlv", "application/excel");
            types.Add(".xlw", "application/excel");
            types.Add(".xm", "audio/xm");
            types.Add(".xml", "text/xml");
            types.Add(".xmz", "xgl/movie");
            types.Add(".xpix", "application/x-vnd.ls-xpix");
            types.Add(".xpm", "image/xpm");
            types.Add(".x-png", "image/png");
            types.Add(".xsr", "video/x-amt-showrun");
            types.Add(".xwd", "image/x-xwd");
            types.Add(".xyz", "chemical/x-pdb");
            types.Add(".z", "application/x-compressed");
            types.Add(".zip", "application/zip");
            types.Add(".zsh", "text/x-script.zsh");

            return types;
        }
    }
}

//Public Module MimeTypeTable
//    Private mimeTable As Generic.SortedDictionary(Of String, String) = Nothing

//    Public ReadOnly Property MimeTypes As Generic.SortedDictionary(Of String, String)
//        Get
//            If mimeTable Is Nothing Then
//                LoadTable()
//            End If
//            Return mimeTable
//        End Get
//    End Property

//    Private Sub LoadTable()
//        Dim types = New Generic.SortedDictionary(Of String, String)(StringComparer.InvariantCultureIgnoreCase)

//        types.Add("3dm", "x-world/x-3dmf")
//        types.Add("3dmf", "x-world/x-3dmf")
//        types.Add("aab", "application/x-authorware-bin")
//        types.Add("aam", "application/x-authorware-map")
//        types.Add("aas", "application/x-authorware-seg")
//        types.Add("abc", "text/vnd.abc")
//        types.Add("acgi", "text/html")
//        types.Add("afl", "video/animaflex")
//        types.Add("ai", "application/postscript")
//        types.Add("aif", "audio/aiff")
//        types.Add("aifc", "audio/aiff")
//        types.Add("aiff", "audio/aiff")
//        types.Add("aim", "application/x-aim")
//        types.Add("aip", "text/x-audiosoft-intra")
//        types.Add("ani", "application/x-navi-animation")
//        types.Add("aos", "application/x-nokia-9000-communicator-add-on-software")
//        types.Add("aps", "application/mime")
//        types.Add("art", "image/x-jg")
//        types.Add("asf", "video/x-ms-asf")
//        types.Add("asm", "text/x-asm")
//        types.Add("asp", "text/asp")
//        types.Add("asx", "application/x-mplayer2")
//        types.Add("au", "audio/x-au")
//        types.Add("avi", "video/avi")
//        types.Add("avs", "video/avs-video")
//        types.Add("bcpio", "application/x-bcpio")
//        types.Add("bm", "image/bmp")
//        types.Add("bmp", "image/bmp")
//        types.Add("boo", "application/book")
//        types.Add("book", "application/book")
//        types.Add("boz", "application/x-bzip2")
//        types.Add("bsh", "application/x-bsh")
//        types.Add("bz", "application/x-bzip")
//        types.Add("bz2", "application/x-bzip2")
//        types.Add("c", "text/plain")
//        types.Add("c++", "text/plain")
//        types.Add("cat", "application/vnd.ms-pki.seccat")
//        types.Add("cc", "text/plain")
//        types.Add("ccad", "application/clariscad")
//        types.Add("cco", "application/x-cocoa")
//        types.Add("cdf", "application/cdf")
//        types.Add("cer", "application/pkix-cert")
//        types.Add("cha", "application/x-chat")
//        types.Add("chat", "application/x-chat")
//        types.Add("class", "application/java")
//        types.Add("conf", "text/plain")
//        types.Add("cpio", "application/x-cpio")
//        types.Add("cpp", "text/plain")
//        types.Add("cpt", "application/x-cpt")
//        types.Add("crl", "application/pkix-crl")
//        types.Add("crt", "application/pkix-cert")
//        types.Add("csh", "application/x-csh")
//        types.Add("css", "text/css")
//        types.Add("cxx", "text/plain")
//        types.Add("dcr", "application/x-director")
//        types.Add("deepv", "application/x-deepv")
//        types.Add("def", "text/plain")
//        types.Add("der", "application/x-x509-ca-cert")
//        types.Add("dif", "video/x-dv")
//        types.Add("dir", "application/x-director")
//        types.Add("dl", "video/dl")
//        types.Add("doc", "application/msword")
//        types.Add("dot", "application/msword")
//        types.Add("dp", "application/commonground")
//        types.Add("drw", "application/drafting")
//        types.Add("dv", "video/x-dv")
//        types.Add("dvi", "application/x-dvi")
//        types.Add("dwf", "drawing/x-dwf (old)")
//        types.Add("dwg", "application/acad")
//        types.Add("dxf", "application/dxf")
//        types.Add("dxr", "application/x-director")
//        types.Add("el", "text/x-script.elisp")
//        types.Add("elc", "application/x-elc")
//        types.Add("eps", "application/postscript")
//        types.Add("es", "application/x-esrehber")
//        types.Add("etx", "text/x-setext")
//        types.Add("evy", "application/envoy")
//        types.Add("f", "text/plain")
//        types.Add("f77", "text/plain")
//        types.Add("f90", "text/plain")
//        types.Add("fdf", "application/vnd.fdf")
//        types.Add("fif", "image/fif")
//        types.Add("fli", "video/fli")
//        types.Add("flo", "image/florian")
//        types.Add("flx", "text/vnd.fmi.flexstor")
//        types.Add("fmf", "video/x-atomic3d-feature")
//        types.Add("for", "text/plain")
//        types.Add("fpx", "image/vnd.fpx")
//        types.Add("frl", "application/freeloader")
//        types.Add("funk", "audio/make")
//        types.Add("g", "text/plain")
//        types.Add("g3", "image/g3fax")
//        types.Add("gif", "image/gif")
//        types.Add("gl", "video/gl")
//        types.Add("gsd", "audio/x-gsm")
//        types.Add("gsm", "audio/x-gsm")
//        types.Add("gsp", "application/x-gsp")
//        types.Add("gss", "application/x-gss")
//        types.Add("gtar", "application/x-gtar")
//        types.Add("gz", "application/x-gzip")
//        types.Add("gzip", "application/x-gzip")
//        types.Add("h", "text/plain")
//        types.Add("hdf", "application/x-hdf")
//        types.Add("help", "application/x-helpfile")
//        types.Add("hgl", "application/vnd.hp-HPGL")
//        types.Add("hh", "text/plain")
//        types.Add("hlb", "text/x-script")
//        types.Add("hlp", "application/x-helpfile")
//        types.Add("hpg", "application/vnd.hp-HPGL")
//        types.Add("hpgl", "application/vnd.hp-HPGL")
//        types.Add("hqx", "application/binhex")
//        types.Add("hta", "application/hta")
//        types.Add("htc", "text/x-component")
//        types.Add("htm", "text/html")
//        types.Add("html", "text/html")
//        types.Add("htmls", "text/html")
//        types.Add("htt", "text/webviewhtml")
//        types.Add("htx", "text/html")
//        types.Add("ice", "x-conference/x-cooltalk")
//        types.Add("ico", "image/x-icon")
//        types.Add("idc", "text/plain")
//        types.Add("ief", "image/ief")
//        types.Add("iefs", "image/ief")
//        types.Add("iges", "application/iges")
//        types.Add("igs", "application/iges")
//        types.Add("ima", "application/x-ima")
//        types.Add("imap", "application/x-httpd-imap")
//        types.Add("inf", "application/inf")
//        types.Add("ins", "application/x-internett-signup")
//        types.Add("ip", "application/x-ip2")
//        types.Add("isu", "video/x-isvideo")
//        types.Add("it", "audio/it")
//        types.Add("iv", "application/x-inventor")
//        types.Add("ivr", "i-world/i-vrml")
//        types.Add("ivy", "application/x-livescreen")
//        types.Add("jam", "audio/x-jam")
//        types.Add("jav", "text/plain")
//        types.Add("java", "text/plain")
//        types.Add("jcm", "application/x-java-commerce")
//        types.Add("jfif", "image/jpeg")
//        types.Add("jfif-tbnl", "image/jpeg")
//        types.Add("jpe", "image/jpeg")
//        types.Add("jpeg", "image/jpeg")
//        types.Add("jpg", "image/jpeg")
//        types.Add("jps", "image/x-jps")
//        types.Add("js", "application/x-javascript")
//        types.Add("jut", "image/jutvision")
//        types.Add("kar", "audio/midi")
//        types.Add("ksh", "text/x-script.ksh")
//        types.Add("la", "audio/nspaudio")
//        types.Add("lam", "audio/x-liveaudio")
//        types.Add("latex", "application/x-latex")
//        types.Add("list", "text/plain")
//        types.Add("lma", "audio/nspaudio")
//        types.Add("log", "text/plain")
//        types.Add("lsp", "application/x-lisp")
//        types.Add("lst", "text/plain")
//        types.Add("lsx", "text/x-la-asf")
//        types.Add("ltx", "application/x-latex")
//        types.Add("m", "text/plain")
//        types.Add("m1v", "video/mpeg")
//        types.Add("m2a", "audio/mpeg")
//        types.Add("m2v", "video/mpeg")
//        types.Add("m3u", "audio/x-mpequrl")
//        types.Add("man", "application/x-troff-man")
//        types.Add("map", "application/x-navimap")
//        types.Add("mar", "text/plain")
//        types.Add("mbd", "application/mbedlet")
//        types.Add("mc$", "application/x-magic-cap-package-1.0")
//        types.Add("mcd", "application/mcad")
//        types.Add("mcf", "image/vasa")
//        types.Add("mcp", "application/netmc")
//        types.Add("me", "application/x-troff-me")
//        types.Add("mht", "message/rfc822")
//        types.Add("mhtml", "message/rfc822")
//        types.Add("mid", "audio/midi")
//        types.Add("midi", "audio/midi")
//        types.Add("mif", "application/x-mif")
//        types.Add("mime", "message/rfc822")
//        types.Add("mjf", "audio/x-vnd.AudioExplosion.MjuiceMediaFile")
//        types.Add("mjpg", "video/x-motion-jpeg")
//        types.Add("mm", "application/base64")
//        types.Add("mme", "application/base64")
//        types.Add("mod", "audio/mod")
//        types.Add("moov", "video/quicktime")
//        types.Add("mov", "video/quicktime")
//        types.Add("movie", "video/x-sgi-movie")
//        types.Add("mp2", "video/mpeg")
//        types.Add("mp3", "audio/mpeg3")
//        types.Add("mpa", "audio/mpeg")
//        types.Add("mpc", "application/x-project")
//        types.Add("mpe", "video/mpeg")
//        types.Add("mpeg", "video/mpeg")
//        types.Add("mpg", "video/mpeg")
//        types.Add("mpga", "audio/mpeg")
//        types.Add("mpp", "application/vnd.ms-project")
//        types.Add("mpt", "application/x-project")
//        types.Add("mpv", "application/x-project")
//        types.Add("mpx", "application/x-project")
//        types.Add("mrc", "application/marc")
//        types.Add("ms", "application/x-troff-ms")
//        types.Add("mv", "video/x-sgi-movie")
//        types.Add("my", "audio/make")
//        types.Add("mzz", "application/x-vnd.AudioExplosion.mzz")
//        types.Add("nap", "image/naplps")
//        types.Add("naplps", "image/naplps")
//        types.Add("nc", "application/x-netcdf")
//        types.Add("ncm", "application/vnd.nokia.configuration-message")
//        types.Add("nif", "image/x-niff")
//        types.Add("niff", "image/x-niff")
//        types.Add("nix", "application/x-mix-transfer")
//        types.Add("nsc", "application/x-conference")
//        types.Add("nvd", "application/x-navidoc")
//        types.Add("oda", "application/oda")
//        types.Add("omc", "application/x-omc")
//        types.Add("omcd", "application/x-omcdatamaker")
//        types.Add("omcr", "application/x-omcregerator")
//        types.Add("p", "text/x-pascal")
//        types.Add("p10", "application/pkcs10")
//        types.Add("p12", "application/pkcs-12")
//        types.Add("p7a", "application/x-pkcs7-signature")
//        types.Add("p7c", "application/pkcs7-mime")
//        types.Add("p7m", "application/pkcs7-mime")
//        types.Add("p7r", "application/x-pkcs7-certreqresp")
//        types.Add("p7s", "application/pkcs7-signature")
//        types.Add("part", "application/pro_eng")
//        types.Add("pas", "text/pascal")
//        types.Add("pbm", "image/x-portable-bitmap")
//        types.Add("pcl", "application/x-pcl")
//        types.Add("pct", "image/x-pict")
//        types.Add("pcx", "image/x-pcx")
//        types.Add("pdb", "chemical/x-pdb")
//        types.Add("pdf", "application/pdf")
//        types.Add("pfunk", "audio/make")
//        types.Add("pgm", "image/x-portable-graymap")
//        types.Add("pic", "image/pict")
//        types.Add("pict", "image/pict")
//        types.Add("pkg", "application/x-newton-compatible-pkg")
//        types.Add("pko", "application/vnd.ms-pki.pko")
//        types.Add("pl", "text/plain")
//        types.Add("plx", "application/x-PiXCLscript")
//        types.Add("pm", "image/x-xpixmap")
//        types.Add("pm4", "application/x-pagemaker")
//        types.Add("pm5", "application/x-pagemaker")
//        types.Add("png", "image/png")
//        types.Add("pnm", "application/x-portable-anymap")
//        types.Add("pot", "application/mspowerpoint")
//        types.Add("pov", "model/x-pov")
//        types.Add("ppa", "application/vnd.ms-powerpoint")
//        types.Add("ppm", "image/x-portable-pixmap")
//        types.Add("pps", "application/mspowerpoint")
//        types.Add("ppt", "application/mspowerpoint")
//        types.Add("ppz", "application/mspowerpoint")
//        types.Add("pre", "application/x-freelance")
//        types.Add("prt", "application/pro_eng")
//        types.Add("ps", "application/postscript")
//        types.Add("pvu", "paleovu/x-pv")
//        types.Add("pwz", "application/vnd.ms-powerpoint")
//        types.Add("py", "text/x-script.phyton")
//        types.Add("pyc", "applicaiton/x-bytecode.python")
//        types.Add("qcp", "audio/vnd.qcelp")
//        types.Add("qd3", "x-world/x-3dmf")
//        types.Add("qd3d", "x-world/x-3dmf")
//        types.Add("qif", "image/x-quicktime")
//        types.Add("qt", "video/quicktime")
//        types.Add("qtc", "video/x-qtc")
//        types.Add("qti", "image/x-quicktime")
//        types.Add("qtif", "image/x-quicktime")
//        types.Add("ra", "audio/x-pn-realaudio")
//        types.Add("ram", "audio/x-pn-realaudio")
//        types.Add("ras", "application/x-cmu-raster")
//        types.Add("rast", "image/cmu-raster")
//        types.Add("rexx", "text/x-script.rexx")
//        types.Add("rf", "image/vnd.rn-realflash")
//        types.Add("rgb", "image/x-rgb")
//        types.Add("rm", "application/vnd.rn-realmedia")
//        types.Add("rmi", "audio/mid")
//        types.Add("rmm", "audio/x-pn-realaudio")
//        types.Add("rmp", "audio/x-pn-realaudio")
//        types.Add("rng", "application/ringing-tones")
//        types.Add("rnx", "application/vnd.rn-realplayer")
//        types.Add("roff", "application/x-troff")
//        types.Add("rp", "image/vnd.rn-realpix")
//        types.Add("rpm", "audio/x-pn-realaudio-plugin")
//        types.Add("rss", "text/xml")
//        types.Add("rt", "text/richtext")
//        types.Add("rtf", "text/richtext")
//        types.Add("rtx", "text/richtext")
//        types.Add("rv", "video/vnd.rn-realvideo")
//        types.Add("s", "text/x-asm")
//        types.Add("s3m", "audio/s3m")
//        types.Add("sbk", "application/x-tbook")
//        types.Add("scm", "application/x-lotusscreencam")
//        types.Add("sdml", "text/plain")
//        types.Add("sdp", "application/sdp")
//        types.Add("sdr", "application/sounder")
//        types.Add("sea", "application/sea")
//        types.Add("set", "application/set")
//        types.Add("sgm", "text/sgml")
//        types.Add("sgml", "text/sgml")
//        types.Add("sh", "text/x-script.sh")
//        types.Add("shar", "application/x-bsh")
//        types.Add("shtml", "text/html")
//        types.Add("sid", "audio/x-psid")
//        types.Add("sit", "application/x-sit")
//        types.Add("skd", "application/x-koan")
//        types.Add("skm", "application/x-koan")
//        types.Add("skp", "application/x-koan")
//        types.Add("skt", "application/x-koan")
//        types.Add("sl", "application/x-seelogo")
//        types.Add("smi", "application/smil")
//        types.Add("smil", "application/smil")
//        types.Add("snd", "audio/basic")
//        types.Add("sol", "application/solids")
//        types.Add("spc", "application/x-pkcs7-certificates")
//        types.Add("spl", "application/futuresplash")
//        types.Add("spr", "application/x-sprite")
//        types.Add("sprite", "application/x-sprite")
//        types.Add("src", "application/x-wais-source")
//        types.Add("ssi", "text/x-server-parsed-html")
//        types.Add("ssm", "application/streamingmedia")
//        types.Add("sst", "application/vnd.ms-pki.certstore")
//        types.Add("step", "application/step")
//        types.Add("stl", "application/sla")
//        types.Add("stp", "application/step")
//        types.Add("sv4cpio", "application/x-sv4cpio")
//        types.Add("sv4crc", "application/x-sv4crc")
//        types.Add("svf", "image/x-dwg")
//        types.Add("svr", "application/x-world")
//        types.Add("swf", "application/x-shockwave-flash")
//        types.Add("t", "application/x-troff")
//        types.Add("talk", "text/x-speech")
//        types.Add("tar", "application/x-tar")
//        types.Add("tbk", "application/toolbook")
//        types.Add("tcl", "text/x-script.tcl")
//        types.Add("tcsh", "text/x-script.tcsh")
//        types.Add("tex", "application/x-tex")
//        types.Add("texi", "application/x-texinfo")
//        types.Add("texinfo", "application/x-texinfo")
//        types.Add("text", "text/plain")
//        types.Add("tgz", "application/x-compressed")
//        types.Add("tif", "image/tiff")
//        types.Add("tiff", "image/tiff")
//        types.Add("tr", "application/x-troff")
//        types.Add("tsi", "audio/tsp-audio")
//        types.Add("tsp", "audio/tsplayer")
//        types.Add("tsv", "text/tab-separated-values")
//        types.Add("turbot", "image/florian")
//        types.Add("txt", "text/plain")
//        types.Add("uil", "text/x-uil")
//        types.Add("uni", "text/uri-list")
//        types.Add("unis", "text/uri-list")
//        types.Add("unv", "application/i-deas")
//        types.Add("uri", "text/uri-list")
//        types.Add("uris", "text/uri-list")
//        types.Add("ustar", "multipart/x-ustar")
//        types.Add("uu", "text/x-uuencode")
//        types.Add("uue", "text/x-uuencode")
//        types.Add("vcd", "application/x-cdlink")
//        types.Add("vcs", "text/x-vCalendar")
//        types.Add("vda", "application/vda")
//        types.Add("vdo", "video/vdo")
//        types.Add("vew", "application/groupwise")
//        types.Add("viv", "video/vivo")
//        types.Add("vivo", "video/vivo")
//        types.Add("vmd", "application/vocaltec-media-desc")
//        types.Add("vmf", "application/vocaltec-media-file")
//        types.Add("voc", "audio/voc")
//        types.Add("vos", "video/vosaic")
//        types.Add("vox", "audio/voxware")
//        types.Add("vqe", "audio/x-twinvq-plugin")
//        types.Add("vqf", "audio/x-twinvq")
//        types.Add("vql", "audio/x-twinvq-plugin")
//        types.Add("vrml", "application/x-vrml")
//        types.Add("vrt", "x-world/x-vrt")
//        types.Add("vsd", "application/x-visio")
//        types.Add("vst", "application/x-visio")
//        types.Add("vsw", "application/x-visio")
//        types.Add("w60", "application/wordperfect6.0")
//        types.Add("w61", "application/wordperfect6.1")
//        types.Add("w6w", "application/msword")
//        types.Add("wav", "audio/wav")
//        types.Add("wb1", "application/x-qpro")
//        types.Add("wbmp", "image/vnd.wap.wbmp")
//        types.Add("web", "application/vnd.xara")
//        types.Add("wiz", "application/msword")
//        types.Add("wk1", "application/x-123")
//        types.Add("wmf", "windows/metafile")
//        types.Add("wml", "text/vnd.wap.wml")
//        types.Add("wmlc", "application/vnd.wap.wmlc")
//        types.Add("wmls", "text/vnd.wap.wmlscript")
//        types.Add("wmlsc", "application/vnd.wap.wmlscriptc")
//        types.Add("word", "application/msword")
//        types.Add("wp", "application/wordperfect")
//        types.Add("wp5", "application/wordperfect")
//        types.Add("wp6", "application/wordperfect")
//        types.Add("wpd", "application/wordperfect")
//        types.Add("wq1", "application/x-lotus")
//        types.Add("wri", "application/mswrite")
//        types.Add("wrl", "application/x-world")
//        types.Add("wrz", "model/vrml")
//        types.Add("wsc", "text/scriplet")
//        types.Add("wsrc", "application/x-wais-source")
//        types.Add("wtk", "application/x-wintalk")
//        types.Add("xbm", "image/x-xbitmap")
//        types.Add("xdr", "video/x-amt-demorun")
//        types.Add("xgz", "xgl/drawing")
//        types.Add("xif", "image/vnd.xiff")
//        types.Add("xl", "application/excel")
//        types.Add("xla", "application/excel")
//        types.Add("xlb", "application/excel")
//        types.Add("xlc", "application/excel")
//        types.Add("xld", "application/excel")
//        types.Add("xlk", "application/excel")
//        types.Add("xll", "application/excel")
//        types.Add("xlm", "application/excel")
//        types.Add("xls", "application/excel")
//        types.Add("xlt", "application/excel")
//        types.Add("xlv", "application/excel")
//        types.Add("xlw", "application/excel")
//        types.Add("xm", "audio/xm")
//        types.Add("xml", "text/xml")
//        types.Add("xmz", "xgl/movie")
//        types.Add("xpix", "application/x-vnd.ls-xpix")
//        types.Add("xpm", "image/xpm")
//        types.Add("x-png", "image/png")
//        types.Add("xsr", "video/x-amt-showrun")
//        types.Add("xwd", "image/x-xwd")
//        types.Add("xyz", "chemical/x-pdb")
//        types.Add("z", "application/x-compressed")
//        types.Add("zip", "application/zip")
//        types.Add("zsh", "text/x-script.zsh")

//        types.Add("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
//        types.Add("dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template")
//        types.Add("docm", "application/vnd.ms-word.document.macroEnabled.12")
//        types.Add("dotm", "application/vnd.ms-word.template.macroEnabled.12")
//        types.Add("xlt", "application/vnd.ms-excel")
//        types.Add("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
//        types.Add("xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template")
//        types.Add("xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12")
//        types.Add("xltm", "application/vnd.ms-excel.template.macroEnabled.12")
//        types.Add("xlam", "application/vnd.ms-excel.addin.macroEnabled.12")
//        types.Add("xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12")
//        types.Add("ppa", "application/vnd.ms-powerpoint")
//        types.Add("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation")
//        types.Add("potx", "application/vnd.openxmlformats-officedocument.presentationml.template")
//        types.Add("ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow")
//        types.Add("ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12")
//        types.Add("pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12")
//        types.Add("potm", "application/vnd.ms-powerpoint.template.macroEnabled.12")
//        types.Add("ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12")

//        mimeTable = types
//    End Sub
//End Module
